package com.dd.cloud.user.service.doctor;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.user.entity.doctor.PatientDeliveryAddr;
import com.dd.cloud.user.req.doctor.PatientDeliveryAddrCreateReq;
import com.dd.cloud.user.req.doctor.PatientDeliveryAddrH5CreateReq;
import com.dd.cloud.user.req.doctor.PatientDeliveryAddrUpdateReq;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 患者配送地址表 服务类
 * </p>
 *
 * @author czg
 * @since 2022-09-28
 */
public interface IPatientDeliveryAddrService extends IService<PatientDeliveryAddr> {
    /**
     * 查询当前患者的配送地址列表
     *
     * @param medId
     * @return
     */
    List<PatientDeliveryAddr> getPatientDeliveryAddrList(String medId);

    /**
     * 添加患者收货地址
     *
     * @param req
     */
    void addPatientDeliveryAddr(PatientDeliveryAddrCreateReq req);

    /**
     * 添加患者收货地址 h5
     *
     * @param req
     */
    void addPatientDeliveryAddrH5(PatientDeliveryAddrH5CreateReq req);

    /**
     * 添加患者收货地址 h5 数组形式
     *
     * @param reqs
     */
    void addPatientDeliveryAddrsH5(List<PatientDeliveryAddrH5CreateReq> reqs);

    /**
     * 修改患者收货地址
     *
     * @param req
     */
    void updatePatientDeliveryAddr(PatientDeliveryAddrUpdateReq req);

    /**
     * 修改默认的收货地址
     *
     * @param id
     */
    void updateTypeDeliveryAddr(Integer id);

    /**
     * 修改收货地址状态
     *
     * @param id
     * @param status
     */
    void updateDeliveryAddrStatus(Integer id, Integer status);

    /**
     * 添加临时地址
     *
     * @param body
     */
    void addDeliveryAddrTemp(String body);

    /**
     * 获取添加临时地址数据
     *
     * @param docId
     * @return
     */
    Map<String, Object> getDeliveryAddrTemp(Integer docId);

    /**
     * 同步就诊人,用户地址状态数据
     * @param id
     * @param status
     */
    void updateUserAddressStatus(Integer id, Integer status);


    /**
     * 同步就诊人，用户地址数据
     * @param addr
     */
    void updateUserAddress(PatientDeliveryAddr addr);
}
